/* PR libstdc++/88101 */
/* { dg-do run } */

struct D { int a; int : 24; int b : 8; };
struct E {};
struct F { char c, d, e; };
struct G : public D, E, F { int f; } g1, g2;

__attribute__((noipa)) void
foo (G *g)
{
  g->a = -1; g->b = -1; g->c = -1; g->d = -1; g->e = -1; g->f = -1;
}

int
main ()
{
  __builtin_memset (&g2, -1, sizeof (g2));
  foo (&g1);
  foo (&g2);
  __builtin_clear_padding (&g2);
  if (__builtin_memcmp (&g1, &g2, sizeof (g1)))
    __builtin_abort ();
  return 0;
}
